// 定义类型别名
type UserId=string | number |symbol|undefined;

interface Person{
    userId:UserId;

}

const userId1:UserId=123;

type shuzi=number | string //type用法：联合类型,即可以是number类型，也可以是string类型
let a:shuzi
a=100
a="hello"

type Gender='男' | '女' //字面量类型
let gender:Gender='男' //只能为 '男' 或者 '女'

// a=false
/**
 * type和interface的区别
 */

// 交叉类型

type Area={
    num:number;
    h:number; 
    w:number;
};

type Address={
    num:number;
    cell:number;
    room:string
}

type House= Area & Address

const house:House={
    h:100,
    w:200,
    num:1,
    cell:2,
    room:"hi"
}

console.log(typeof(house))

//使用 type 定义函数类型：
type LogFunc=()=>void


// 如果是先声明函数类型，而后赋值，void定义的函数可以返回任何值，但是返回值不能做任何操作
const f1:LogFunc=function(){
    return 999
}

let sh=f1
console.log(sh)